3.0. Обзор
Компоненты Apache Ozone
Apache Ozone состоит из нескольких ключевых компонентов, которые обеспечивают распределённое хранение данных, управление метаданными, консистентность и высокую доступность. Ниже приведён обзор основных компонентов системы Ozone и их функций.
1. Ozone Manager (OM)
Ozone Manager (OM) управляет метаданными системы и отвечает за операции, связанные с объектами и их пространствами имен, такими как:
- Создание, удаление и модификация ключей (объектов).
- Управление бакетами и volume (логические единицы хранения).
- Обработка API-запросов от клиентов для операций чтения и записи.
OM использует протокол консенсуса Raft (реализованный в Apache Ratis) для обеспечения консистентности метаданных в условиях распределённой среды.
2. Storage Container Manager (SCM)
SCM управляет физическими узлами хранения (DataNodes) и распределяет данные по контейнерам. Основные задачи SCM:
- Отслеживание DataNodes и управление их состоянием.
- Распределение блоков данных и их репликация между узлами.
- Мониторинг хранилищ контейнеров для обеспечения отказоустойчивости.
- Обеспечение балансировки нагрузки на DataNodes.
SCM также использует Raft для обеспечения консистентности и управляет пулом идентификаторов контейнеров для выделения новых единиц хранения.
3. DataNodes
DataNodes – это узлы, на которых фактически хранятся данные. Каждый DataNode выполняет следующие функции:
- Хранение блоков и контейнеров данных.
- Реплик ация данных для обеспечения отказоустойчивости.
- Отправка отчетов SCM о состоянии хранилища.
- Обработка запросов от клиентов для операций с данными (чтение, запись).
DataNodes являются аналогом узлов хранения в HDFS, но работают с контейнерами данных, что позволяет поддерживать миллиарды объектов.
4. Репликация и контейнеры
Ozone использует контейнеры как основную единицу хранения. Контейнеры – это логические группы данных, которые распределяются между DataNodes. Они реплицируются для обеспечения высокой доступности и отказоустойчивости. SCM управляет процессом репликации контейнеров.
5. Raft-протокол (Apache Ratis)
Для обеспечения консистентности и координации между распределёнными компонентами Ozone (OM и SCM) используется протокол Raft. Ratis обеспечивает:
- Линейную консистентность при изменениях в метаданных.
- Высокую доступность за счёт репликации данных.
- Механизмы автоматического восстановления при сбоях узлов.
6. Клиентский интерфейс и API
Apache Ozone поддерживает несколько интерфейсов для взаимодействия с данными:
- Ozone API – собственный API для создания и управления объектами.
- S3 API совместимость – возможность работы с Ozone как с S3-совместимым хранилищем, что упрощает интеграцию с облачными сервисами.
- Hadoop Compatible File System (HCFS) – Ozone поддерживает доступ к данным через интерфейсы, совместимые с HDFS.
7. Volume, Bucket и Key
Ozone использует иерархическую модель для управлени я данными:
- Volume – верхний уровень, в котором содержатся бакеты. Volume создаются для разделения ресурсов между пользователями или проектами.
- Bucket – контейнер для ключей (объектов). Аналог бакета в S3.
- Key – конечный объект данных (файл или блок), который хранится в бакете. Каждый ключ связан с метаданными и данными, хранящимися в контейнерах.
8. Инструменты управления и мониторинга
Ozone предлагает удобные инструменты для управления и мониторинга:
- Командная строка (Ozone CLI) – управление кластерами и объектами.
- Графический интерфейс – веб-консоль для мониторинга и администрирования.
- Интеграция с Prometheus и Grafana – для мониторинга состояния кластера в реальном времени.